home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 32 / CD Expert nº 32.iso / Army Men TiS / data1.cab / Required_Files / rules / holdflag_ai.txt < prev    next >
Text File  |  1999-10-08  |  4KB  |  120 lines

  1. // this gets loaded on the host if the @1 army is AI controlled
  2.  
  3. // @1 = color of army to do AI for, @2-@4 = other colors
  4. macro holdflag_ai_macro 4
  5. {
  6.     // This variable holds the current action for @1
  7.     // 0 means no action, 1 means follow black flag, 2 means get powerups, 3 means hold the flag
  8.     variable @1Action 0
  9.  
  10.     if startup1 then
  11.         triggerdelay 1000 @1ChooseNewAction,
  12.         triggerdelay 2000 @1RegularOrders
  13.  
  14.     if @1ChooseNewAction then
  15.         setvar @1Action 0,
  16.         trigger @1CheckIfHoldFlag,
  17.         trigger @1CheckIfFlagUnheld,
  18.         trigger @1ChoseAction
  19.  
  20.     // if it's time to choose a new action but we are currently owning the hill then
  21.     // we should always stay on the hill
  22.  
  23.     if @1CheckIfHoldFlag testvar hasitem @1sarge1 blackflag1 = 1 then
  24.         trigger @1ReturnToBase
  25.         
  26.     // if it's time to choose a new action and the hill is not owned then head straight for it
  27.  
  28.     if @1CheckIfFlagUnheld testvar hasitem @2sarge1 blackflag1 = 0 and hasitem @3sarge1 blackflag1 = 0 and hasitem @4sarge1 blackflag1 = 0 then
  29.         trigger @1FollowFlag
  30.         
  31.     // if @1 has no current action then pick an action
  32.     // ideally we would base this on how well armed we are
  33.     if @1ChooseAction testvar @1Action = 0 then
  34.         trigger @1PickRandomAction,
  35.         triggerdelay 1000 @1ChooseAction
  36.  
  37.     if @1PickRandomAction then random
  38.         trigger @1FollowFlag,
  39.         trigger @1GetPowerUps
  40.  
  41.     // these events setup the @1Action variable and do the actions
  42.  
  43.     if @1FollowFlag then
  44.         setvar @1Action 1,
  45.         order @1sarge1 follow blackflag1 inmode attack,
  46.         order @1 group 1 follow @1sarge1 inmode defend,
  47.         order @1 group 2 follow blackflag1 inmode attack,
  48.         order @1 group 3 follow blackflag1 inmode attack,
  49.         trigger @1StartTimeOut
  50.  
  51.     if @1GetPowerUps then
  52.         setvar @1Action 2,
  53.         order @1sarge1 follow blackflag1 inmode attack,
  54.         order @1 group 1 follow @1sarge1 inmode defend,
  55.         order @1 group 2 follow blackflag1 inmode attack,
  56.         order @1 group 3 follow blackflag1 inmode attack,
  57.         trigger @1StartTimeOut
  58.  
  59.     if @1ReturnToBase then
  60.         setvar @1Action 3,
  61.         order @1sarge1 goto @1base inmode attack,
  62.         order @1 group 1 follow @1sarge1 inmode defend,
  63.         order @1 group 2 goto @1base inmode defend,
  64.         order @1 group 3 goto @1base inmode defend,
  65.         trigger @1StartTimeOut
  66.  
  67.     if @1HoldFlag then
  68.         setvar @1Action 4,
  69.         order @1sarge1 goto @1base inmode attack,
  70.         order @1 group 1 follow @1sarge1 inmode defend,
  71.         order @1 group 2 goto @1base inmode defend,
  72.         order @1 group 3 goto @1base inmode defend,
  73.         trigger @1StartTimeOut
  74.  
  75.     // these events chose a new action if we get on the hill
  76.  
  77.     if pickedup blackflag1 by @1sarge1 then
  78.         trigger @1ReturnToBase
  79.  
  80.     if pickedup blackflag1 by @2sarge1 then
  81.         trigger @1FollowFlag
  82.  
  83.     if pickedup blackflag1 by @3sarge1 then
  84.         trigger @1FollowFlag
  85.  
  86.     if pickedup blackflag1 by @4sarge1 then
  87.         trigger @1FollowFlag
  88.  
  89.     if padon @1base testvar hasitem @1sarge1 blackflag1 = 1 then
  90.         trigger @1HoldFlag
  91.  
  92.     // these events choose new actions if a sarge is killed
  93.  
  94.     if killed @1sarge1 then
  95.         triggerdelay 5000 @1GetPowerups
  96.  
  97.     // these are the standing order regardless of what mode sarge is in
  98.         
  99.     if @1RegularOrders then
  100.         setaimode @1 group 4 defend,
  101.         setaimode @1 group 5 defend,
  102.         order @1 group 7 goto @1base inmode defend,
  103.         triggerdelay 5000 @1RegularOrders
  104.  
  105.     // timeout code - if mode has not changed for a while then change it
  106.  
  107.     variable @1TimeOutVar 0
  108.     variable @1LastTimeOutVar 1
  109.  
  110.     if @1StartTimeOut then
  111.         addvar @1TimeOutVar 1,
  112.         triggerdelay 120000 @1CheckTimeOut
  113.  
  114.     if @1CheckTimeOut testvar @1TimeOutVar = @1LastTimeOutVar then
  115.         trigger @1ChooseNewAction
  116.  
  117.     if @1CheckTimeOut testvar @1TimeOutVar <> @1LastTimeOutVar then
  118.         addvar @1LastTimeOutVar 1
  119. }
  120.